#include "TeleporterInfo.h"
#include "Common/TableData/TeleportTeleportCfg.h"
#include "TeleporterInfoMgr.h"

TeleporterInfo::TeleporterInfo(uint32_t configId, Point3<float>& pos) :m_configId(configId), m_configPos(pos), m_pCfgInfo(nullptr)
{
}
TeleporterInfo::TeleporterInfo() : m_configId(0), m_configPos(0.0, 0.0, 0.0), m_pCfgInfo(nullptr)
{
}

TeleporterInfo::~TeleporterInfo()
{

}

bool TeleporterInfo::Init()
{
	m_pCfgInfo = g_GetTeleportTeleportCfgTable()->GetTeleportTeleportCfgInfo(m_configId);
	if (m_pCfgInfo == nullptr)
	{
		return false;
	}

	return true;
}

bool TeleporterInfo::UnInit()
{
	m_pCfgInfo = nullptr;
	return true;
}

bool TeleporterInfo::IsSameScene() const
{
	return m_pCfgInfo->isSameScene == 1;
}


uint32_t TeleporterInfo::GetDstMapId() const
{
	return m_pCfgInfo->toSceneID;
}

uint32_t TeleporterInfo::GetDstStandId() const
{
	return m_pCfgInfo->standID;
}

Point3<float> TeleporterInfo::GetDstStandIdPos() const
{
	Point3<float> telepos(0.0, 0.0, 0.0);
	TeleporterLocation* pLoc = g_GetMapLocationCfg()->getTeleporterLocation(m_pCfgInfo->standID);
	if (pLoc != nullptr)
	{
		telepos = pLoc->m_transPos;
	}
	return telepos;
}

TeleporterInfo* TeleporterInfo::GetDstStandIdInfo() const
{
	return g_GetTeleporterInfoMgr()->GetTeleporterInfo(m_pCfgInfo->standID);
}